#ifndef NANE_IMAGEDECODER_H
#   define  NANE_IMAGEDECODER_H

#   include "nane/core/SubSystemProduct.h"
#   include "nane/CodecSystem/Image/IImageCodecSystem.h"

namespace nane 
{
    class ImageDecoder
        : public SubSystemProduct
    {
    protected:
        class Implementation;
        friend class ImageCodecSystem;

    public:
        ImageDecoder( const NullType& = NullPtr );
        ImageDecoder( Implementation* _impl );
        ImageDecoder( const ImageDecoder& _other );

    public:
        uint32 GetWidth();
        uint32 GetHeight();
        EPixelFormat GetFormat();
        uint32 ReadRow( byte* _buffer, uint32 _count );
        
    private:
        Implementation* m;
    };
}   // namespace nane

#endif	// NANE_IMAGEDECODER_H
